home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / XAMPP 1.4.14 / xampp-win32-1.4.14-installer.exe / xampp / php / pear / tests / Var_Dump / test.php
PHP Script  |  2004-10-01  |  16KB  |  538 lines

  1. <?php
  2.  
  3. require_once 'PHPUnit.php';
  4. require_once 'Var_Dump.php';
  5.  
  6. /*=============*/
  7. /* Test Classe */
  8. /*=============*/
  9.  
  10. class Var_DumpTest extends PHPUnit_TestCase {
  11.  
  12.     var $vd;
  13.  
  14.     function Var_DumpTest($name) {
  15.         $this->PHPUnit_TestCase($name);
  16.     }
  17.  
  18.     function setUp() {
  19.         $this->vd = new Var_Dump(array('display_mode'=>'Text'));
  20.     }
  21.  
  22.     function tearDown() {
  23.         unset($this->vd);
  24.     }
  25.  
  26.     /*====================*/
  27.     /* Test simple values */
  28.     /*====================*/
  29.  
  30.     function test_type_int() {
  31.         $this->assertEquals('int -2147483647',$this->vd->toString(-2147483647));
  32.         $this->assertEquals('int 0',$this->vd->toString(0));
  33.         $this->assertEquals('int 2147483647',$this->vd->toString(2147483647));
  34.     }
  35.  
  36.     function test_type_bool() {
  37.         $this->assertEquals('bool false',$this->vd->toString(FALSE));
  38.         $this->assertEquals('bool true',$this->vd->toString(TRUE));
  39.     }
  40.  
  41.     function test_type_float() {
  42.         $this->assertEquals('float 12.345678',$this->vd->toString(12.345678));
  43.         $this->assertEquals('float -12.345678',$this->vd->toString(-12.345678));
  44.         $this->assertEquals('float 2147483648',$this->vd->toString(2147483648));
  45.         $this->assertEquals('float -2147483648',$this->vd->toString(-2147483648));
  46.     }
  47.  
  48.     function test_type_resource() {
  49.         $dir='/tmp/';
  50.         if (is_dir($dir)) {
  51.             if ($dh=opendir($dir)) {
  52.                 $this->assertRegExp('/^resource\(stream\)\s[0-9]+$/',$this->vd->toString($dh));
  53.         closedir($dh);
  54.             } else {
  55.                 $this->assertTrue(FALSE,'Unable to open directory /tmp, ');
  56.             }
  57.     } else {
  58.             $this->assertTrue(FALSE,'Unable to open directory /tmp, ');
  59.         }
  60.     }
  61.  
  62.     function test_type_null() {
  63.         $this->assertEquals('NULL',$this->vd->toString(NULL));
  64.     }
  65.  
  66.     /*============*/
  67.     /* Test Array */
  68.     /*============*/
  69.  
  70.     function test_type_array() {
  71.         $this->assertEquals(
  72.             'array(3) {'."\n".
  73.             '  key1 => string(44) The quick brown'."\n".
  74.             '                     fox jumped over'."\n".
  75.             '                     the lazy dog'."\n".
  76.             '  key2 => &array(3) {'."\n".
  77.             '    0 => bool true'."\n".
  78.             '    1 => int 123'."\n".
  79.             '    2 => float 123.45'."\n".
  80.             '  }'."\n".
  81.             '  key3 => NULL'."\n".
  82.             '}',
  83.             $this->vd->toString($GLOBALS['array'])
  84.         );
  85.     }
  86.  
  87.     /*=============*/
  88.     /* Test Object */
  89.     /*=============*/
  90.  
  91.     function test_type_object() {
  92.         $this->assertEquals(
  93.             'object(object)(3) {'."\n".
  94.             '  key1 => string(44) The quick brown'."\n".
  95.             '                     fox jumped over'."\n".
  96.             '                     the lazy dog'."\n".
  97.             '  key2 => array(3) {'."\n".
  98.             '    0 => bool true'."\n".
  99.             '    1 => int 123'."\n".
  100.             '    2 => float 123.45'."\n".
  101.             '  }'."\n".
  102.             '  key3 => NULL'."\n".
  103.             '}',
  104.             $this->vd->toString(new object()));
  105.     }
  106.  
  107.     /*======================*/
  108.     /* Test "Text" Renderer */
  109.     /*======================*/
  110.  
  111.     function test_renderer_text() {
  112.         Var_Dump::displayInit(
  113.             array('display_mode'=>'Text'),
  114.             array(
  115.                 'show_eol'       => ' *',
  116.                 'offset'         => 3,
  117.                 'opening'        => '(',
  118.                 'closing'        => ')',
  119.                 'operator'       => ' -> ',
  120.                 'before_num_key' => '\'',
  121.                 'after_num_key'  => '\'',
  122.                 'before_str_key' => '"',
  123.                 'after_str_key'  => '"',
  124.                 'before_type'    => '[',
  125.                 'after_type'     => ']'
  126.             )
  127.         );
  128.         $this->assertEquals(
  129.             'array(3) ('."\n".
  130.             '   "key1" -> [string(44)] The quick brown *'."\n".
  131.             '                          fox jumped over *'."\n".
  132.             '                          the lazy dog'."\n".
  133.             '   "key2" -> &array(3) ('."\n".
  134.             '      \'0\' -> [bool] true'."\n".
  135.             '      \'1\' -> [int] 123'."\n".
  136.             '      \'2\' -> [float] 123.45'."\n".
  137.             '   )'."\n".
  138.             '   "key3" -> [NULL]'."\n".
  139.             ')',
  140.             Var_Dump::display($GLOBALS['array'],TRUE)
  141.         );
  142.     }
  143.  
  144.     /*============================*/
  145.     /* Test "HTML4_Text" Renderer */
  146.     /*============================*/
  147.  
  148.     function test_renderer_html4_text() {
  149.         Var_Dump::displayInit(array('display_mode'=>'HTML4_Text'));
  150.         $this->assertEquals(
  151.             '<pre>array(3) {'."\n".
  152.             '  key1 => <font color="#006600">string(44)</font> <font color="#339900">The quick brown'."\n".
  153.             '</font>                     <font color="#339900">fox jumped over'."\n".
  154.             '</font>                     <font color="#339900">the lazy dog</font>'."\n".
  155.             '  key2 => &array(3) {'."\n".
  156.             '    0 => <font color="#006600">bool</font> <font color="#339900">true</font>'."\n".
  157.             '    1 => <font color="#006600">int</font> <font color="#339900">123</font>'."\n".
  158.             '    2 => <font color="#006600">float</font> <font color="#339900">123.45</font>'."\n".
  159.             '  }'."\n".
  160.             '  key3 => <font color="#006600">NULL</font>'."\n".
  161.             '}'."\n".
  162.             '</pre>',
  163.             Var_Dump::display($GLOBALS['array'],TRUE)
  164.         );
  165.     }
  166.  
  167.     /*============================*/
  168.     /* Test "XHTML_Text" Renderer */
  169.     /*============================*/
  170.  
  171.     function test_renderer_xhtml_text() {
  172.         Var_Dump::displayInit(array('display_mode'=>'XHTML_Text'));
  173.         $this->assertEquals(
  174.             '<pre class="var_dump">array(3) {'."\n".
  175.             '  key1 => <span class="type">string(44)</span> <span class="value">The quick brown'."\n".
  176.             '</span>                     <span class="value">fox jumped over'."\n".
  177.             '</span>                     <span class="value">the lazy dog</span>'."\n".
  178.             '  key2 => &array(3) {'."\n".
  179.             '    0 => <span class="type">bool</span> <span class="value">true</span>'."\n".
  180.             '    1 => <span class="type">int</span> <span class="value">123</span>'."\n".
  181.             '    2 => <span class="type">float</span> <span class="value">123.45</span>'."\n".
  182.             '  }'."\n".
  183.             '  key3 => <span class="type">NULL</span>'."\n".
  184.             '}'."\n".
  185.             '</pre>',
  186.             Var_Dump::display($GLOBALS['array'],TRUE)
  187.         );
  188.     }
  189.  
  190.     /*=======================*/
  191.     /* Test "Table" Renderer */
  192.     /*=======================*/
  193.  
  194.     function test_renderer_table() {
  195.         Var_Dump::displayInit(
  196.             array('display_mode'=>'Table'),
  197.             array(
  198.                 'before_str_key' => '"',
  199.                 'after_str_key'  => '"',
  200.                 'before_type'    => '[',
  201.                 'after_type'     => ']'
  202.             )
  203.         );
  204.         $this->assertEquals(
  205.             '<table>'.
  206.             '<caption>array(3)</caption>'.
  207.             '<tr>'.
  208.                 '<td>"key1"</td>'.
  209.                 '<td>[string(44)]</td>'.
  210.                 '<td>The quick brown<br />'."\n".'fox jumped over<br />'."\n".'the lazy dog</td>'.
  211.             '</tr><tr>'.
  212.                 '<td>"key2"</td>'.
  213.                 '<td colspan="2">'.
  214.                     '<table>'.
  215.                     '<caption>&array(3)</caption>'.
  216.                     '<tr><td>0</td><td>[bool]</td><td>true</td></tr>'.
  217.                     '<tr><td>1</td><td>[int]</td><td>123</td></tr>'.
  218.                     '<tr><td>2</td><td>[float]</td><td>123.45</td></tr>'.
  219.                     '</table>'.
  220.                 '</td>'.
  221.             '</tr><tr>'.
  222.                 '<td>"key3"</td>'.
  223.                 '<td colspan="2">[NULL]</td>'.
  224.             '</tr>'.
  225.             '</table>',
  226.             Var_Dump::display($GLOBALS['array'],TRUE)
  227.         );
  228.     }
  229.  
  230.     /*=============================*/
  231.     /* Test "HTML4_Table" Renderer */
  232.     /*=============================*/
  233.  
  234.     function test_renderer_html4_table() {
  235.         Var_Dump::displayInit(array('display_mode'=>'HTML4_Table'));
  236.         $this->assertEquals(
  237.             '<table border="0" cellpadding="1" cellspacing="0" bgcolor="black"><tr><td>'.
  238.             '<table border="0" cellpadding="4" cellspacing="0" width="100%">'.
  239.             '<caption style="color:white;background:#339900;">array(3)</caption>'.
  240.             '<tr valign="top" bgcolor="#F8F8F8">'.
  241.                 '<td bgcolor="#CCCCCC"><b>key1</b></td>'.
  242.                 '<td><font color="#000000">string(44)</font></td>'.
  243.                 '<td><font color="#006600">The quick brown<br />'."\n".'fox jumped over<br />'."\n".'the lazy dog</font></td>'.
  244.             '</tr><tr valign="top" bgcolor="#E8E8E8">'.
  245.                 '<td bgcolor="#CCCCCC"><b>key2</b></td>'.
  246.                 '<td colspan="2">'.
  247.                     '<table border="0" cellpadding="1" cellspacing="0" bgcolor="black"><tr><td>'.
  248.                     '<table border="0" cellpadding="4" cellspacing="0" width="100%">'.
  249.                     '<caption style="color:white;background:#339900;">&array(3)</caption>'.
  250.                     '<tr valign="top" bgcolor="#F8F8F8">'.
  251.                         '<td bgcolor="#CCCCCC"><b>0</b></td>'.
  252.                         '<td><font color="#000000">bool</font></td>'.
  253.                         '<td><font color="#006600">true</font></td>'.
  254.                     '</tr><tr valign="top" bgcolor="#E8E8E8">'.
  255.                         '<td bgcolor="#CCCCCC"><b>1</b></td>'.
  256.                         '<td><font color="#000000">int</font></td>'.
  257.                         '<td><font color="#006600">123</font></td>'.
  258.                     '</tr><tr valign="top" bgcolor="#F8F8F8">'.
  259.                         '<td bgcolor="#CCCCCC"><b>2</b></td>'.
  260.                         '<td><font color="#000000">float</font></td>'.
  261.                         '<td><font color="#006600">123.45</font></td>'.
  262.                     '</tr>'.
  263.                     '</table></td></tr></table>'.
  264.                 '</td>'.
  265.             '</tr><tr valign="top" bgcolor="#F8F8F8">'.
  266.                 '<td bgcolor="#CCCCCC"><b>key3</b></td>'.
  267.                 '<td colspan="2"><font color="#000000">NULL</font></td>'.
  268.             '</tr>'.
  269.             '</table></td></tr></table>',
  270.             Var_Dump::display($GLOBALS['array'],TRUE)
  271.         );
  272.     }
  273.  
  274.     /*=============================*/
  275.     /* Test "XHTML_Table" Renderer */
  276.     /*=============================*/
  277.  
  278.     function test_renderer_xhtml_table() {
  279.         Var_Dump::displayInit(array('display_mode'=>'XHTML_Table'));
  280.         $this->assertEquals(
  281.             '<table class="var_dump">'.
  282.             '<caption>array(3)</caption>'.
  283.             '<tr>'.
  284.                 '<th>key1</th>'.
  285.                 '<td><i>string(44)</i></td>'.
  286.                 '<td>The quick brown<br />'."\n".'fox jumped over<br />'."\n".'the lazy dog</td>'.
  287.             '</tr><tr class="alt">'.
  288.                 '<th>key2</th>'.
  289.                 '<td colspan="2">'.
  290.                     '<table class="var_dump">'.
  291.                     '<caption>&array(3)</caption>'.
  292.                     '<tr><th>0</th><td><i>bool</i></td><td>true</td></tr>'.
  293.                     '<tr class="alt"><th>1</th><td><i>int</i></td><td>123</td></tr>'.
  294.                     '<tr><th>2</th><td><i>float</i></td><td>123.45</td></tr>'.
  295.                     '</table>'.
  296.                 '</td>'.
  297.             '</tr><tr>'.
  298.                 '<th>key3</th>'.
  299.                 '<td colspan="2"><i>NULL</i></td>'.
  300.             '</tr>'.
  301.             '</table>',
  302.             Var_Dump::display($GLOBALS['array'],TRUE)
  303.         );
  304.     }
  305.  
  306.     /*=====================*/
  307.     /* Test "XML" Renderer */
  308.     /*=====================*/
  309.  
  310.     function test_renderer_xml() {
  311.         Var_Dump::displayInit(array('display_mode'=>'XML'));
  312.         $this->assertEquals(
  313.             '<group caption="array(3)">'."\n".
  314.             '  <element>'."\n".
  315.             '    <key>key1</key>'."\n".
  316.             '    <type>string(44)</type>'."\n".
  317.             '    <value>The quick brown'."\n".
  318.             'fox jumped over'."\n".
  319.             'the lazy dog</value>'."\n".
  320.             '  </element>'."\n".
  321.             '  <element>'."\n".
  322.             '    <key>key2</key>'."\n".
  323.             '    <type>group</type>'."\n".
  324.             '    <value>'."\n".
  325.             '      <group caption="&array(3)">'."\n".
  326.             '        <element>'."\n".
  327.             '          <key>0</key>'."\n".
  328.             '          <type>bool</type>'."\n".
  329.             '          <value>true</value>'."\n".
  330.             '        </element>'."\n".
  331.             '        <element>'."\n".
  332.             '          <key>1</key>'."\n".
  333.             '          <type>int</type>'."\n".
  334.             '          <value>123</value>'."\n".
  335.             '        </element>'."\n".
  336.             '        <element>'."\n".
  337.             '          <key>2</key>'."\n".
  338.             '          <type>float</type>'."\n".
  339.             '          <value>123.45</value>'."\n".
  340.             '        </element>'."\n".
  341.             '      </group>'."\n".
  342.             '    </value>'."\n".
  343.             '  </element>'."\n".
  344.             '  <element>'."\n".
  345.             '    <key>key3</key>'."\n".
  346.             '    <type>NULL</type>'."\n".
  347.             '    <value></value>'."\n".
  348.             '  </element>'."\n".
  349.             '</group>'."\n",
  350.             Var_Dump::display($GLOBALS['array'],TRUE)
  351.         );
  352.     }
  353.  
  354.     /*===================================*/
  355.     /* Test Text Renderer : Compact mode */
  356.     /*===================================*/
  357.  
  358.     function test_renderer_text_compact() {
  359.         Var_Dump::displayInit(
  360.             array('display_mode'=>'Text'),
  361.             array('mode'=>'compact')
  362.         );
  363.         $this->assertEquals(
  364.             'array(3) {'."\n".
  365.             '  key-1 => string(44) The quick brown fox jumped over the lazy dog'."\n".
  366.             '  key-2 => array(2) {'."\n".
  367.             '    long-key => &array(3) {'."\n".
  368.             '      0 => string(4) John'."\n".
  369.             '      11 => string(4) Jack'."\n".
  370.             '      127 => string(4) Bill'."\n".
  371.             '    }'."\n".
  372.             '    file => NULL'."\n".
  373.             '  }'."\n".
  374.             '  long-key-3 => int 234'."\n".
  375.             '}',
  376.             Var_Dump::display($GLOBALS['array2'],TRUE)
  377.         );
  378.     }
  379.  
  380.     /*==================================*/
  381.     /* Test Text Renderer : Normal mode */
  382.     /*==================================*/
  383.  
  384.     function test_renderer_text_normal() {
  385.         Var_Dump::displayInit(
  386.             array('display_mode'=>'Text'),
  387.             array('mode'=>'normal')
  388.         );
  389.         $this->assertEquals(
  390.             'array(3) {'."\n".
  391.             '  key-1      => string(44) The quick brown fox jumped over the lazy dog'."\n".
  392.             '  key-2      => array(2) {'."\n".
  393.             '    long-key => &array(3) {'."\n".
  394.             '      0   => string(4) John'."\n".
  395.             '      11  => string(4) Jack'."\n".
  396.             '      127 => string(4) Bill'."\n".
  397.             '    }'."\n".
  398.             '    file     => NULL'."\n".
  399.             '  }'."\n".
  400.             '  long-key-3 => int 234'."\n".
  401.             '}',
  402.             Var_Dump::display($GLOBALS['array2'],TRUE)
  403.         );
  404.     }
  405.  
  406.     /*================================*/
  407.     /* Test Text Renderer : Wide mode */
  408.     /*================================*/
  409.  
  410.     function test_renderer_text_wide() {
  411.         Var_Dump::displayInit(
  412.             array('display_mode'=>'Text'),
  413.             array('mode'=>'wide')
  414.         );
  415.         $this->assertEquals(
  416.             'array(3) {'."\n".
  417.             '  key-1      => string(44) The quick brown fox jumped over the lazy dog'."\n".
  418.             '  key-2      => array(2) {'."\n".
  419.             '                  long-key => &array(3) {'."\n".
  420.             '                                0   => string(4) John'."\n".
  421.             '                                11  => string(4) Jack'."\n".
  422.             '                                127 => string(4) Bill'."\n".
  423.             '                              }'."\n".
  424.             '                  file     => NULL'."\n".
  425.             '                }'."\n".
  426.             '  long-key-3 => int 234'."\n".
  427.             '}',
  428.             Var_Dump::display($GLOBALS['array2'],TRUE)
  429.         );
  430.     }
  431.  
  432.     /*==================================*/
  433.     /* Bug #490 Recursions not managed. */
  434.     /*==================================*/
  435.  
  436.     function test_bug_490() {
  437.         $this->assertEquals(
  438.             'object(parent)(2) {'."\n".
  439.             '  myChild => object(child)(1) {'."\n".
  440.             '    myParent => &object(parent)(2) {'."\n".
  441.             '      myChild => object(child)(1) {'."\n".
  442.             '        myParent => &object(parent)(2) {'."\n".
  443.             '          myChild => *RECURSION*'."\n".
  444.             '          myName => string(6) parent'."\n".
  445.             '        }'."\n".
  446.             '      }'."\n".
  447.             '      myName => string(6) parent'."\n".
  448.             '    }'."\n".
  449.             '  }'."\n".
  450.             '  myName => string(6) parent'."\n".
  451.             '}',
  452.             $this->vd->toString(new parent())
  453.         );
  454.     }
  455.  
  456.     /*============================================================================*/
  457.     /* Bug #1321 Numeric zero values in array or object attributes are not shown. */
  458.     /*============================================================================*/
  459.  
  460.     function test_bug_1321() {
  461.         $this->assertEquals(
  462.             'object(zero)(2) {'."\n".
  463.             '  i => int 0'."\n".
  464.             '  f => float 0'."\n".
  465.             '}',
  466.             $this->vd->toString(new zero())
  467.         );
  468.         $this->assertEquals(
  469.             'array(2) {'."\n".
  470.             '  0 => int 0'."\n".
  471.             '  1 => float 0'."\n".
  472.             '}',
  473.             $this->vd->toString(array(0,0.0))
  474.         );
  475.     }
  476.  
  477. }
  478.  
  479. /*============================*/
  480. /* Classes used by test Cases */
  481. /*============================*/
  482.  
  483. class zero {
  484.     var $i = 0;
  485.     var $f = 0.0;
  486. }
  487.  
  488. class object {
  489.     var $key1 = "The quick brown\nfox jumped over\nthe lazy dog";
  490.     var $key2 = array(TRUE, 123, 123.45);
  491.     var $key3 = NULL;
  492. }
  493.  
  494. class parent {
  495.     function parent() {
  496.         $this->myChild = new child($this);
  497.         $this->myName = 'parent';
  498.     }
  499. }
  500. class child {
  501.     function child(&$parent) {
  502.         $this->myParent =& $parent;
  503.     }
  504. }
  505.  
  506. class recursion {
  507.     function recursion() {
  508.         $this->recursion = new recursion();
  509.     }
  510. }
  511.  
  512. $linkedArray=array(TRUE, 123, 123.45);
  513. $array=array(
  514.     'key1' => 'The quick brown'."\n".'fox jumped over'."\n".'the lazy dog',
  515.     'key2' => & $linkedArray,
  516.     'key3' => NULL
  517. );
  518.  
  519. $linkedArray2=array(0=>'John', 11=>'Jack', 127=>'Bill');
  520. $array2=array(
  521.     'key-1' => 'The quick brown fox jumped over the lazy dog',
  522.     'key-2' => array(
  523.         'long-key' => & $linkedArray2,
  524.         'file' => NULL
  525.     ),
  526.     'long-key-3' => 234,
  527. );
  528.  
  529. /*========*/
  530. /* Main() */
  531. /*========*/
  532.  
  533. $suite  = new PHPUnit_TestSuite("Var_DumpTest");
  534. $result = PHPUnit::run($suite);
  535.  
  536. echo $result->toHTML();
  537.  
  538. ?>